package com.web.gobang.view;

import com.web.gobang.connect.MySocket;
import com.web.gobang.data.GameCenter;
import com.web.gobang.data.Spot;
import com.web.gobang.game.AutoChess;
import com.web.gobang.game.GameCoupe;
import com.web.gobang.game.GameOnline;
import com.web.gobang.game.GameRobot;

import javax.swing.*;
import java.awt.*;

/**
 * 主界面右边的控制按钮面板
 */
public class ControlPanel extends panelBG {
    private static final long serialVersionUID = 1L;
    public static ControlPanel my;
    private JButton btnShowChess, btnAgain, btnChessAI, btnTest, btnCoupe, btnOnline, btnRobot, btnExit;

    public ControlPanel() {
        this.setLayout(new FlowLayout(FlowLayout.CENTER));
//        this.setBackground(new Color(220, 220, 220, 220));
        //按钮
        ImageIcon buttonIcon = new ImageIcon("./img/buttonBG.png");
        buttonIcon.setImage(buttonIcon.getImage().getScaledInstance(160, 40, Image.SCALE_SMOOTH));

        btnExit= new JButton("退出游戏",buttonIcon);
        btnAgain = new JButton("重新游戏",buttonIcon);
        btnChessAI = new JButton("智能AI下棋",buttonIcon);
//        btnCoupe = new JButton("双人对战");
//        btnRobot = new JButton("人机对战");
//        btnOnline = new JButton("联机对战");
//        btnShowChess = new JButton("显示所有棋子");
//        btnTest = new JButton("备用测试按钮");

        btnAgain.setHorizontalTextPosition(SwingConstants.CENTER);
        btnAgain.setOpaque(false);
        btnAgain.setContentAreaFilled(false);//设置图片填满按钮所在的区域
        btnAgain.setBorderPainted(false);//设置是否绘制边框
        btnAgain.setBorder(null);//设置边框

        btnChessAI.setHorizontalTextPosition(SwingConstants.CENTER);
        btnChessAI.setOpaque(false);
        btnChessAI.setContentAreaFilled(false);//设置图片填满按钮所在的区域
        btnChessAI.setBorderPainted(false);//设置是否绘制边框
        btnChessAI.setBorder(null);//设置边框

        btnExit.setHorizontalTextPosition(SwingConstants.CENTER);
        btnExit.setOpaque(false);
        btnExit.setContentAreaFilled(false);//设置图片填满按钮所在的区域
        btnExit.setBorderPainted(false);//设置是否绘制边框
        btnExit.setBorder(null);//设置边框

        this.add(btnChessAI);
        this.add(btnAgain);
        this.add(btnExit);
//        this.add(btnCoupe);
//        this.add(btnRobot);
//        this.add(btnOnline);
//        this.add(btnShowChess);
//        this.add(btnTest);

        my = this;
        addListener();
    }

    public static void init() {
        my.repaint();
    }

    /**
     * 添加监听事件
     */
    private void addListener() {
//        btnShowChess.addActionListener(event -> GameCenter.showChess());

        btnExit.addActionListener(event -> {
            GameCenter.reStart();
            ChessBroad.myBroad.repaint();
            MySocket.close();
//            btnCoupe.setEnabled(true);
//            btnRobot.setEnabled(true);
//            btnOnline.setEnabled(true);
            btnChessAI.setEnabled(true);
            try {
                MySocket.socket.close();
            } catch (Exception e) {
            }
        });

        btnAgain.addActionListener(event -> {
            int mode = GameCenter.getMode();
            GameCenter.reStart();
            ChessBroad.myBroad.repaint();
            GameCenter.setMode(mode);
        });

        btnChessAI.addActionListener(event -> {
            if (GameCenter.isEnd()) {
                JOptionPane.showMessageDialog(null, "游戏未开始，无法使用AI下棋", "提示信息", JOptionPane.CANCEL_OPTION);
            } else {
                new AutoChess();
            }
        });

//        btnTest.addActionListener(event -> {
//            ChessBroad.myBroad.repaint();
//            System.out.println("----------黑棋权值-------");
//            GameCenter.showWeight(Spot.blackChess);
//
//            System.out.println("----------白棋权值-------");
//            GameCenter.showWeight(Spot.whiteChess);
//        });

//        btnCoupe.addActionListener(event -> {
//            GameCoupe.reStart();
//            btnCoupe.setEnabled(false);
//            btnRobot.setEnabled(false);
//            btnOnline.setEnabled(false);
//        });
//
//        btnRobot.addActionListener(event -> {
//            GameRobot.reStart();
//            btnCoupe.setEnabled(false);
//            btnRobot.setEnabled(false);
//            btnOnline.setEnabled(false);
//        });
//
//        btnOnline.addActionListener(event -> {
//            // new 一定要在前面，否则数据被重置！
//            GameOnline.reStart();
//            MyDialog.online();
//
//            btnCoupe.setEnabled(false);
//            btnRobot.setEnabled(false);
//            btnOnline.setEnabled(false);
//            btnChessAI.setEnabled(false);
//        });
    }
}
